package com.ssy.lingxi.order.model.vo.buyer.request;

import com.ssy.lingxi.order.handler.annotation.FundModeAnnotation;
import com.ssy.lingxi.order.handler.annotation.OrderIdsAnnotation;
import com.ssy.lingxi.order.handler.annotation.OrderPayChannelAnnotation;
import com.ssy.lingxi.order.handler.annotation.OrderPayTypeAnnotation;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.io.Serializable;
import java.util.List;

/**
 * 订单支付接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-08-18
 */
public class BuyerMergePayVO implements Serializable {
    private static final long serialVersionUID = -8857573078311567319L;

    /**
     * 订单Id列表
     */
    @NotEmpty(message = "订单Id列表不能为空")
    @OrderIdsAnnotation
    private List<Long> orderIds;

    /**
     * 资金归集模式
     */
    @NotNull(message = "资金归集模式: 1-平台代收，2-会员直接到账")
    @FundModeAnnotation
    private Integer fundMode;

    /**
     * 支付方式，1-线上支付，2-线下支付，3-授信额度支付，4-货到付款 5-结算支付 6-通联支付 7-建行支付 8-跨境电商进口支付
     */
    @NotNull(message = "支付方式不能为空")
    @OrderPayTypeAnnotation
    private Integer payType;

    /**
     * 支付渠道，1-支付宝，2-微信，3-银联，4-余额，5-线下支付线上确认，6-授信额度支付，7-货到付款 8-月结 9-账期 10-会员权益积分支付 11-通联支付-微信支付 12-通联支付-支付宝支付 13-通联支付-快捷支付 14-通联支付-网银支付 15-通联支付-余额支付
     */
    @NotNull(message = "支付渠道不能为空")
    @OrderPayChannelAnnotation
    private Integer payChannel;

    /**
     * 支付次数（支付批次）
     */
    @NotNull(message = "支付次数要大于0")
    @Positive(message = "支付次数要大于0")
    private Integer batchNo;

    /**
     * 支付凭证url列表，如果是线下支付线上确认，不能为空
     */
    private List<String> vouchers;

    /**
     * 支付密码，如果是余额支付，不能为空。前端要Aes加密
     */
    private String payPassword;

    /**
     * 微信小程序支付时，微信小程序登录凭证，如不是微信小程序支付，此字段要为空或Null
     */
    private String weChatCode;

    /**
     * （App数字人民币支付）跳转链接
     */
    private String returnUrl;

    public List<Long> getOrderIds() {
        return orderIds;
    }

    public void setOrderIds(List<Long> orderIds) {
        this.orderIds = orderIds;
    }

    public Integer getFundMode() {
        return fundMode;
    }

    public void setFundMode(Integer fundMode) {
        this.fundMode = fundMode;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(Integer payChannel) {
        this.payChannel = payChannel;
    }

    public Integer getBatchNo() {
        return batchNo;
    }

    public void setBatchNo(Integer batchNo) {
        this.batchNo = batchNo;
    }

    public List<String> getVouchers() {
        return vouchers;
    }

    public void setVouchers(List<String> vouchers) {
        this.vouchers = vouchers;
    }

    public String getPayPassword() {
        return payPassword;
    }

    public void setPayPassword(String payPassword) {
        this.payPassword = payPassword;
    }

    public String getWeChatCode() {
        return weChatCode;
    }

    public void setWeChatCode(String weChatCode) {
        this.weChatCode = weChatCode;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }
}
